home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK2.toast / Development Kits / TEC 1.4 / Interfaces / TextEncodingConverter.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-09-25  |  7.9 KB  |  261 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        TextEncodingConverter.h
  3.  
  4.      Contains:    Text Encoding Conversion Interfaces. 
  5.  
  6.      Version:    Mac OS 8
  7.  
  8.      Copyright:    © 1994-1998 by Apple Computer, Inc., all rights reserved.
  9.  
  10. */
  11. #ifndef __TEXTENCODINGCONVERTER__
  12. #define __TEXTENCODINGCONVERTER__
  13.  
  14. #ifndef __MACTYPES__
  15. #include <MacTypes.h>
  16. #endif
  17. #ifndef __TEXTCOMMON__
  18. #include <TextCommon.h>
  19. #endif
  20.  
  21.  
  22.  
  23. #if PRAGMA_ONCE
  24. #pragma once
  25. #endif
  26.  
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30.  
  31. #if PRAGMA_IMPORT
  32. #pragma import on
  33. #endif
  34.  
  35. #if PRAGMA_STRUCT_ALIGN
  36.     #pragma options align=mac68k
  37. #elif PRAGMA_STRUCT_PACKPUSH
  38.     #pragma pack(push, 2)
  39. #elif PRAGMA_STRUCT_PACK
  40.     #pragma pack(2)
  41. #endif
  42.  
  43. typedef OSType                             TECPluginSignature;
  44. typedef UInt32                             TECPluginVersion;
  45. /* plugin signatures */
  46.  
  47. enum {
  48.     kTECSignature                = FOUR_CHAR_CODE('encv'),
  49.     kTECUnicodePluginSignature    = FOUR_CHAR_CODE('puni'),
  50.     kTECJapanesePluginSignature    = FOUR_CHAR_CODE('pjpn'),
  51.     kTECChinesePluginSignature    = FOUR_CHAR_CODE('pzho'),
  52.     kTECKoreanPluginSignature    = FOUR_CHAR_CODE('pkor')
  53. };
  54.  
  55.  
  56. /* converter object reference */
  57. typedef struct OpaqueTECObjectRef*         TECObjectRef;
  58. typedef struct OpaqueTECSnifferObjectRef*  TECSnifferObjectRef;
  59. typedef OSType                             TECPluginSig;
  60.  
  61. struct TECConversionInfo {
  62.     TextEncoding                     sourceEncoding;
  63.     TextEncoding                     destinationEncoding;
  64.     UInt16                             reserved1;
  65.     UInt16                             reserved2;
  66. };
  67. typedef struct TECConversionInfo        TECConversionInfo;
  68. /* return number of encodings types supported by user's configuraton of the encoding converter */
  69. EXTERN_API( OSStatus )
  70. TECCountAvailableTextEncodings    (ItemCount *            numberEncodings);
  71.  
  72. /* fill in an array of type TextEncoding passed in by the user with types of encodings the current configuration of the encoder can handle. */
  73. EXTERN_API( OSStatus )
  74. TECGetAvailableTextEncodings    (TextEncoding             availableEncodings[],
  75.                                  ItemCount                 maxAvailableEncodings,
  76.                                  ItemCount *            actualAvailableEncodings);
  77.  
  78. /* return number of from-to encoding conversion pairs supported  */
  79. EXTERN_API( OSStatus )
  80. TECCountDirectTextEncodingConversions (ItemCount *        numberOfEncodings);
  81.  
  82. /* fill in an array of type TextEncodingPair passed in by the user with types of encoding pairs the current configuration of the encoder can handle. */
  83. EXTERN_API( OSStatus )
  84. TECGetDirectTextEncodingConversions (TECConversionInfo     availableConversions[],
  85.                                  ItemCount                 maxAvailableConversions,
  86.                                  ItemCount *            actualAvailableConversions);
  87.  
  88. /* return number of encodings a given encoding can be converter into */
  89. EXTERN_API( OSStatus )
  90. TECCountDestinationTextEncodings (TextEncoding             inputEncoding,
  91.                                  ItemCount *            numberOfEncodings);
  92.  
  93. /* fill in an array of type TextEncodingPair passed in by the user with types of encodings pairs the current configuration of the encoder can handle. */
  94. EXTERN_API( OSStatus )
  95. TECGetDestinationTextEncodings    (TextEncoding             inputEncoding,
  96.                                  TextEncoding             destinationEncodings[],
  97.                                  ItemCount                 maxDestinationEncodings,
  98.                                  ItemCount *            actualDestinationEncodings);
  99.  
  100. /* get info about a text encoding */
  101. EXTERN_API( OSStatus )
  102. TECGetTextEncodingInternetName    (TextEncoding             textEncoding,
  103.                                  Str255                 encodingName);
  104.  
  105. EXTERN_API( OSStatus )
  106. TECGetTextEncodingFromInternetName (TextEncoding *        textEncoding,
  107.                                  ConstStr255Param         encodingName);
  108.  
  109. /* create/dispose converters */
  110. EXTERN_API( OSStatus )
  111. TECCreateConverter                (TECObjectRef *            newEncodingConverter,
  112.                                  TextEncoding             inputEncoding,
  113.                                  TextEncoding             outputEncoding);
  114.  
  115. EXTERN_API( OSStatus )
  116. TECCreateConverterFromPath        (TECObjectRef *            newEncodingConverter,
  117.                                  const TextEncoding     inPath[],
  118.                                  ItemCount                 inEncodings);
  119.  
  120. EXTERN_API( OSStatus )
  121. TECDisposeConverter                (TECObjectRef             newEncodingConverter);
  122.  
  123. /* convert text encodings */
  124. EXTERN_API( OSStatus )
  125. TECClearConverterContextInfo    (TECObjectRef             encodingConverter);
  126.  
  127. EXTERN_API( OSStatus )
  128. TECConvertText                    (TECObjectRef             encodingConverter,
  129.                                  ConstTextPtr             inputBuffer,
  130.                                  ByteCount                 inputBufferLength,
  131.                                  ByteCount *            actualInputLength,
  132.                                  TextPtr                 outputBuffer,
  133.                                  ByteCount                 outputBufferLength,
  134.                                  ByteCount *            actualOutputLength);
  135.  
  136. EXTERN_API( OSStatus )
  137. TECFlushText                    (TECObjectRef             encodingConverter,
  138.                                  TextPtr                 outputBuffer,
  139.                                  ByteCount                 outputBufferLength,
  140.                                  ByteCount *            actualOutputLength);
  141.  
  142. /* one-to-many routines */
  143. EXTERN_API( OSStatus )
  144. TECCountSubTextEncodings        (TextEncoding             inputEncoding,
  145.                                  ItemCount *            numberOfEncodings);
  146.  
  147. EXTERN_API( OSStatus )
  148. TECGetSubTextEncodings            (TextEncoding             inputEncoding,
  149.                                  TextEncoding             subEncodings[],
  150.                                  ItemCount                 maxSubEncodings,
  151.                                  ItemCount *            actualSubEncodings);
  152.  
  153. EXTERN_API( OSStatus )
  154. TECGetEncodingList                (TECObjectRef             encodingConverter,
  155.                                  ItemCount *            numEncodings,
  156.                                  Handle *                encodingList);
  157.  
  158. EXTERN_API( OSStatus )
  159. TECCreateOneToManyConverter        (TECObjectRef *            newEncodingConverter,
  160.                                  TextEncoding             inputEncoding,
  161.                                  ItemCount                 numOutputEncodings,
  162.                                  const TextEncoding     outputEncodings[]);
  163.  
  164.  
  165. EXTERN_API( OSStatus )
  166. TECConvertTextToMultipleEncodings (TECObjectRef         encodingConverter,
  167.                                  ConstTextPtr             inputBuffer,
  168.                                  ByteCount                 inputBufferLength,
  169.                                  ByteCount *            actualInputLength,
  170.                                  TextPtr                 outputBuffer,
  171.                                  ByteCount                 outputBufferLength,
  172.                                  ByteCount *            actualOutputLength,
  173.                                  TextEncodingRun         outEncodingsBuffer[],
  174.                                  ItemCount                 maxOutEncodingRuns,
  175.                                  ItemCount *            actualOutEncodingRuns);
  176.  
  177. EXTERN_API( OSStatus )
  178. TECFlushMultipleEncodings        (TECObjectRef             encodingConverter,
  179.                                  TextPtr                 outputBuffer,
  180.                                  ByteCount                 outputBufferLength,
  181.                                  ByteCount *            actualOutputLength,
  182.                                  TextEncodingRun         outEncodingsBuffer[],
  183.                                  ItemCount                 maxOutEncodingRuns,
  184.                                  ItemCount *            actualOutEncodingRuns);
  185.  
  186. /* international internet info */
  187. EXTERN_API( OSStatus )
  188. TECCountWebTextEncodings        (RegionCode             locale,
  189.                                  ItemCount *            numberEncodings);
  190.  
  191. EXTERN_API( OSStatus )
  192. TECGetWebTextEncodings            (RegionCode             locale,
  193.                                  TextEncoding             availableEncodings[],
  194.                                  ItemCount                 maxAvailableEncodings,
  195.                                  ItemCount *            actualAvailableEncodings);
  196.  
  197. EXTERN_API( OSStatus )
  198. TECCountMailTextEncodings        (RegionCode             locale,
  199.                                  ItemCount *            numberEncodings);
  200.  
  201. EXTERN_API( OSStatus )
  202. TECGetMailTextEncodings            (RegionCode             locale,
  203.                                  TextEncoding             availableEncodings[],
  204.                                  ItemCount                 maxAvailableEncodings,
  205.                                  ItemCount *            actualAvailableEncodings);
  206.  
  207. /* examine text encodings */
  208. EXTERN_API( OSStatus )
  209. TECCountAvailableSniffers        (ItemCount *            numberOfEncodings);
  210.  
  211. EXTERN_API( OSStatus )
  212. TECGetAvailableSniffers            (TextEncoding             availableSniffers[],
  213.                                  ItemCount                 maxAvailableSniffers,
  214.                                  ItemCount *            actualAvailableSniffers);
  215.  
  216. EXTERN_API( OSStatus )
  217. TECCreateSniffer                (TECSnifferObjectRef *    encodingSniffer,
  218.                                  TextEncoding             testEncodings[],
  219.                                  ItemCount                 numTextEncodings);
  220.  
  221. EXTERN_API( OSStatus )
  222. TECSniffTextEncoding            (TECSnifferObjectRef     encodingSniffer,
  223.                                  TextPtr                 inputBuffer,
  224.                                  ByteCount                 inputBufferLength,
  225.                                  TextEncoding             testEncodings[],
  226.                                  ItemCount                 numTextEncodings,
  227.                                  ItemCount                 numErrsArray[],
  228.                                  ItemCount                 maxErrs,
  229.                                  ItemCount                 numFeaturesArray[],
  230.                                  ItemCount                 maxFeatures);
  231.  
  232. EXTERN_API( OSStatus )
  233. TECDisposeSniffer                (TECSnifferObjectRef     encodingSniffer);
  234.  
  235. EXTERN_API( OSStatus )
  236. TECClearSnifferContextInfo        (TECSnifferObjectRef     encodingSniffer);
  237.  
  238.  
  239.  
  240.  
  241. #if PRAGMA_STRUCT_ALIGN
  242.     #pragma options align=reset
  243. #elif PRAGMA_STRUCT_PACKPUSH
  244.     #pragma pack(pop)
  245. #elif PRAGMA_STRUCT_PACK
  246.     #pragma pack()
  247. #endif
  248.  
  249. #ifdef PRAGMA_IMPORT_OFF
  250. #pragma import off
  251. #elif PRAGMA_IMPORT
  252. #pragma import reset
  253. #endif
  254.  
  255. #ifdef __cplusplus
  256. }
  257. #endif
  258.  
  259. #endif /* __TEXTENCODINGCONVERTER__ */
  260.  
  261.